package crawler.chapter1;

/**
 * @description: 动态数组
 * @date 2020/1/16 17:56
 */
public class DynamicArrayOfInt {

    private int[] data;//保存数据的数组

    public DynamicArrayOfInt(){
        data = new int[1]; // 按需增长的数组
    }

    public int get(int position) {
        // 得到数组中指定位置的值
        return data[position];
    }


    public void put(int position, int value) {
        // 把值存储到数组中指定位置，为了包含这个位置，如果需要，数据数组大小会增长
        if (position >= data.length) {
            // 如果指定的位置超出了数据数组的实际大小，则把数组的大小翻倍
            // 如果任然不包含指定的位置，则新的大小指定成2*position
            int newSize = 2 * data.length;
            if (position > newSize) {
                newSize = 2 * position;
            }
            int[] newData = new int[newSize];
            System.arraycopy(data, 0, newData, 0, data.length);
            data = newData;
        }
        data[position] = value;
    }

    public int[][] fastCopy2D(int[][] in) {
        int[][] ret = new int[in.length][in[0].length];
        for (int i = 0; i < in.length; i++) {
            System.arraycopy(in[i], 0, ret[i], 0, in[0].length);
        }
        return ret;
    }

}
